package iface.aplicativo.apresentacao.controle;

import iface.aplicativo.excecao.MensagemException;
import iface.aplicativo.negocio.aps.ManterFabricantesAPS;
import iface.aplicativo.negocio.entidade.Fabricante;
import iface.aplicativo.util.BeanAbstrato;

import java.io.Serializable;
import java.util.Collection;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.SessionScoped;

@ManagedBean
@SessionScoped
public class ManterFabricantesBean extends BeanAbstrato implements Serializable {

	private static final long serialVersionUID = 6929316813623705850L;
	private Fabricante fabricante;
	private Fabricante fabricanteAux;

	@ManagedProperty(value = "#{manterFabricantesAPS}")
	private ManterFabricantesAPS service;

	public void setService(ManterFabricantesAPS service) {
		this.service = service;
	}

	public Collection<Fabricante> getTodosFabricantes() throws Exception {
		return this.service.consultarTodosFabricantes();
	}

	public void salvarFabricante() throws Exception {

		try {
			String msg = this.service.salvarFabricante(this.getFabricante());
			limparCampos();

			this.setMensagem(msg, MSG_TIPO_INFORMACAO, "");
		} catch (final MensagemException e) {
			this.setMensagem(e.getMessage(), MSG_TIPO_AVISO, "");
		} catch (final Exception e) {
			this.setMensagem(e.getMessage(), MSG_TIPO_ERRO, "");
		}
	}

	public void excluirFabricante() throws Exception {

		try {
			String msg = this.service
					.excluirFabricante(this.getFabricanteAux());
			limparCampos();

			this.setMensagem(msg, MSG_TIPO_INFORMACAO, "");
		} catch (final MensagemException e) {
			this.setMensagem(e.getMessage(), MSG_TIPO_AVISO, "");
		} catch (final Exception e) {
			this.setMensagem(e.getMessage(), MSG_TIPO_ERRO, "");
		}
	}

	public void limparCampos() {
		fabricante = null;
		fabricanteAux = null;
	}

	public void setFabricante(Fabricante fabricante) {
		this.fabricante = fabricante;
	}

	public Fabricante getFabricante() {
		if (fabricante == null) {
			fabricante = new Fabricante();
		}
		return fabricante;
	}

	public Fabricante getFabricanteAux() {
		if (fabricanteAux == null) {
			fabricanteAux = new Fabricante();
		}
		return fabricanteAux;
	}

	public void setFabricanteAux(Fabricante fabricanteAux) {
		this.fabricanteAux = fabricanteAux;
	}

}
